package cn.doitedu.day02

/**
 * 综合练习，要发见字符串压平，并且返回以h开头的单词，并且最后将单词编程大写
 */
object Test01 {


  def main(args: Array[String]): Unit = {


    val lines: Array[String] = Array("spark hadoop flink", "spark hive", "hadoop spark spark", "flink spark hive flink flink hive")
    //希望得到的结果(去重)
    //Array("HADOOP", "HIVE")

    //虽然可以一行代码就可以完成（scala函数式编程+链式编程）
    //复杂的逻辑，不建议就写一行
    //val res = lines.flatMap(_.split(" ")).filter(_.startsWith("h")).map(_.toUpperCase()).distinct
    //println(res.toBuffer)


    //对数据进行切分压平
    val words: Array[String] = lines.flatMap(_.split(" "))
    //println(words.toBuffer)
    //对数据进行过滤，保留以h开头的数据
    val filtered: Array[String] = words.filter(_.startsWith("h"))
    //见符合条件的数据转成大写
    val upper: Array[String] = filtered.map(_.toUpperCase)
    //去重
    val res = upper.distinct

    println(res.toBuffer)
  }
}
